#ifndef TIPOBONUS_H_
#define TIPOBONUS_H_

#include <iostream>
#include "string.h"
#include "TipoTexturable.h"
using namespace std;

class TipoBonus : public TipoTexturable  {
private:

	int cantidadMaxima;
	int probabilidadDeAparicion;
	int duracion;
	int tiempoDeAparicion;

public:

	TipoBonus() : TipoTexturable("",""){
	this->setNombreClase("TipoBonus");
	cantidadMaxima = 0;
	probabilidadDeAparicion = 0;
	duracion = 0;
	tiempoDeAparicion = 0;
	}

	/****GETERS****/

	string getNombre(){
		return this->nombre;
	}

	string getTextura(){
		return this->textura;
	}
	
	int getCantidadMaxima(){
		return this->cantidadMaxima;
	}

	int getProbabilidadDeAparicion(){
		return this->probabilidadDeAparicion;
	}

	int getDuracion(){
		return this->duracion;
	}

	int getTiempoDeAparicion(){
		return this->tiempoDeAparicion;
	}

	/****SETERS****/

	void setNombre(string n){
		this->nombre = n;
	}

	void setTiempoDeAparicion(int t){
		this->tiempoDeAparicion = t;
	}
	
	void setTextura(string t){
		this->textura = t;
	}
	
	void setCantidadMaxima(int c){
		this->cantidadMaxima = c;
	}

	void setProbabilidadDeAparicion(int p){
		this->probabilidadDeAparicion = p;
	}

	void setDuracion(int d){
		this->duracion = d;
	}


	void agregarAtributo(string n, string v) throw(...) {
		if(n=="nombre"){
			this->nombre = v;
		} 
		else{
			if(n=="textura"){
				this->textura = v;
			} 
			else {
				if(n=="cantidadMaxima"){
					this->setCantidadMaxima(atoi(v.c_str()));
				}
				else{
					if(n=="probabilidadDeAparicion"){
						this->setProbabilidadDeAparicion(atoi(v.c_str()));
					}
					else{
						if(n=="duracion"){
							this->setDuracion(atoi(v.c_str()));
						}
						else{
							if(n=="tiempoDeAparicion"){
								this->setTiempoDeAparicion(atoi(v.c_str()));
							}
							else{
								throw new AtributoDesconocidoException(n);
							}
						}
					}
				}
			}
		}
	}

};
#endif